package com.nari.ies.server.utils;

import java.text.DecimalFormat;
import java.util.*;

public class XAxisUtil {

    /**
     * 计算日时间横坐标
     *
     * @param period 分钟
     * @return
     */
    public static List<String> getDayXAxisData(int period) {
        List<String> xAxis = new ArrayList<String>();
        String xA = null;
        for (int i = 0; i < 24; i++) {
            for (int j = 0; j < 60; j += period) {
                xA = "";
                if (i < 10) {
                    xA += 0;
                }
                xA += i + ":";
                if (j < 10) {
                    xA += 0;
                }
                xA += j;
                xAxis.add(xA);
            }
        }
        return xAxis;
    }

    public static List<Object> getXAxisData(Date startDate, Date endDate, int num) {
        // 相差的天数
        long days = (endDate.getTime() - startDate.getTime())
                / (24 * 60 * 60 * 1000);
        List<Object> xAxisData = new ArrayList<Object>();
        Calendar calendar = Calendar.getInstance();

        long minPeriod = 24 * 60 * days / num;
        StringBuffer axisStr;
        for (int i = 0; i < num; i++) {
            axisStr = new StringBuffer();
            calendar.setTime(startDate);
            calendar.add(Calendar.DAY_OF_YEAR, (int) (minPeriod * i / 60 / 24));
            if (days > 1) {
                axisStr.append(DateUtil.SDF_DAY.format(calendar.getTime()));
                axisStr.append(" ");
            }
            if ((minPeriod * i / 60) % 24 < 10) {
                axisStr.append('0');
            }
            axisStr.append((minPeriod * i / 60) % 24);
            axisStr.append(':');
            if (minPeriod * i % 60 < 10) {
                axisStr.append('0');
            }
            axisStr.append(minPeriod * i % 60);
            xAxisData.add(axisStr.toString());
        }
        return xAxisData;
    }

    public static List<Object> getXAxisDataByTime(Date startDate, Date endDate, int num) {
        // 相差的天数
        long days = (endDate.getTime() - startDate.getTime())
                / (24 * 60 * 60 * 1000);
        List<Object> xAxisData = new ArrayList<Object>();
        Calendar calendar = Calendar.getInstance();

        long minPeriod = 24 * 60 / num;
        StringBuffer axisStr;
        for (int i = 0; i < num*days; i++) {
            axisStr = new StringBuffer();
            calendar.setTime(startDate);
            calendar.add(Calendar.DAY_OF_YEAR, (int) (minPeriod * i / 60 / 24));
            if (days > 1) {
                axisStr.append(DateUtil.SDF_DAY.format(calendar.getTime()));
                axisStr.append(" ");
            }
            if ((minPeriod * i / 60) % 24 < 10) {
                axisStr.append('0');
            }
            axisStr.append((minPeriod * i / 60) % 24);
            axisStr.append(':');
            if (minPeriod * i % 60 < 10) {
                axisStr.append('0');
            }
            axisStr.append(minPeriod * i % 60);
            xAxisData.add(axisStr.toString());
        }
        return xAxisData;
    }

}
